Most industrial processes require a sequence of operations or steps in order to build a product. This is particularly true of discrete parts manufacture. The steps may occur at specific times and in a specified sequence according to specific parameters, or may occur in response to specific events. Each step may have one or more elements, each element describing activities or operations with greater specificity. The sequencing may be performed either manually or with some type of controller.
Up until the late 1960's, sequencing of discrete industrial operations and many other industrial operations usually was performed using a bank of relays uniquely wired to perform the particular task. Thus, the use of relay logic is well known in most industries. With the availability of semi-conductor logic functions, the electronic programmable logic controller (PLC) was developed. Since relay logic was so well known, the controller design engineers developed the PLC so that the same "language" of relay logic could still be used. However, because of the inherent complexity of ladder logic, programming of PLCs has traditionally been difficult, time consuming and error prone.
Each industrial process may be represented as a tabular construct, known as a ladder diagram, which displays each of the steps with its associated elements and parameters in relay ladder logic. The relay ladder logic referred to herein is a programming language in which input/output signals are written with symbols, such as electrical circuit symbols that conventionally represent relay contacts and relay coils. Also, for example, a processing function, such as "count up", is written with an instruction symbol mnemonic such as INC (Increment). In its most complex form, relay ladder logic is written as a series of Boolean operations and special purpose function blocks to perform non-Boolean activities like timing and counting. The more complex the function to be performed, the more extensive the set of Boolean operations necessary to perform that function. Because of the cryptic nature of ladder logic, it is inherently complex, difficult and time consuming to program and represent complex numerical instructions in ladder logic. In order to alleviate some of the complexity of tying together in series multiple Boolean operations to perform complex numerical operations, some commercial implementations combine high order text-based languages such as C, PASCAL, FORTRAN, ADA and LISP with relay ladder logic in order to simplify programming of complex numerical operations. However, the addition of high level languages to relay ladder programming increases the complexity of the programming task for the engineer. Further, a separate compiling step is required to combine the features of all languages used in a control program, and any debugging operation requires interpretation of several different programming codes, again increasing complexity for the programmer.